13、FLASH读写之三 您所在的位置:网站首页 flash warning什么意思 13、FLASH读写之三

13、FLASH读写之三

2024-06-02 15:57| 来源: 网络整理| 查看: 265

因为关于STM32的Flash相关的知识点比较多,所以该内容的学习我们分为以下4个部分

1、RAM和ROM的一些基本概念 —— STM32学习笔记:FLASH读写之一

2、STM32的Flash寄存器及介绍 —— STM32学习笔记:FLASH读写之二

3、STM32的Flash读写相关函数 —— STM32学习笔记:FLASH读写之三

4、STM32的Flash自己编辑函数 —— STM32学习笔记:FLASH读写之四

本文将详细介绍STM32的Flash读写相关的官方库函数

目录

0x01、解锁、锁定操作

0x02、写Flash函数

0x03、擦除函数

0x04、获取Flash状态函数

0x05、等待操作完成函数

0x06、读Flash函数

我们先来看一下STM32 的官方固件库操作 FLASH 的几个常用函数。这些函数和定义分布在文件 stm32f10x_flash.c 以及 stm32f10x_flash.h 文件中。

0x01、解锁、锁定操作

void FLASH_Unlock(void)

函数功能:解锁Flash

void FLASH_Lock(void)

函数功能:锁定Flash

0x02、写Flash函数

FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data)

函数功能:向指定的地址写入一个字(32位)。

     参数1:uint32_t Address —> 指定要写入的地址

     参数2:uint32_t Data       —> 指定要写入的数据

    返回值:FLASH Status —> FLASH_ERROR_PG,FLASH_ERROR_WRP,FLASH_COMPLETE ,FLASH_TIMEOUT. 

FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data)

函数功能:向指定的地址写入一个半字(16位)。

     参数1:指定要写入的地址

     参数2:指定要写入的数据

    返回值:FLASH Status —> FLASH_ERROR_PG,FLASH_ERROR_WRP,FLASH_COMPLETE ,FLASH_TIMEOUT. 

FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data)

函数功能:向指定的地址写入一个字节(8位)。

     参数1:指定要写入的地址

     参数2:指定要写入的数据

    返回值:FLASH Status —> FLASH_ERROR_PG,FLASH_ERROR_WRP,FLASH_COMPLETE ,FLASH_TIMEOUT.

0x03、擦除函数

FLASH_Status FLASH_ErasePage(uint32_t Page_Address)

函数功能:擦除指定页

     参数1:uint32_t Address —> 指定要擦除的地址

    返回值:FLASH Status —> FLASH_BUSY,FLASH_ERROR_PG,FLASH_ERROR_WRP,FLASH_COMPLETE ,FLASH_TIMEOUT. 

FLASH_Status FLASH_EraseAllPages(void)

函数功能:擦除所有页

    返回值:FLASH Status —> FLASH_ERROR_PG,FLASH_ERROR_WRP,FLASH_COMPLETE ,FLASH_TIMEOUT. 

FLASH_Status FLASH_EraseOptionBytes(void)

函数功能:擦除闪存选项字节。

    返回值:FLASH Status —> FLASH_ERROR_PG,FLASH_ERROR_WRP,FLASH_COMPLETE ,FLASH_TIMEOUT. 

0x04、获取Flash状态函数

FLASH_Status FLASH_GetStatus(void)

函数功能:获取Flash状态。

    返回值:FLASH Status —> FLASH_BUSY,FLASH_ERROR_PG,FLASH_ERROR_WRP,FLASH_COMPLETE 

0x05、等待操作完成函数

FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout)

函数功能:等待闪存操作完成或超时。

    返回值:FLASH Status —> FLASH_ERROR_PG,FLASH_ERROR_WRP,FLASH_COMPLETE ,FLASH_TIMEOUT. 

0x06、读Flash函数

这个函数在标准库中没有,我们自己来编写一个,函数定义风格与库函数尽量保持一致。

uint16_t STMFLASH_ReadHalfWord(uint32_t faddr)

函数功能:读出指定地址的半字(16位)数据。

     参数1:指定要写入的地址

    返回值:读出的半字数据(16位)

/** *@brief 读取指定地址的半字(16位数据) *@param faddr:读地址(此地址必须为2的倍数!!) *@return 读取的数据. */ uint16_t STMFLASH_ReadHalfWord(uint32_t faddr) { return *(vu16*)faddr; }

注:

1、上述函数的返回值类型都是FLASH Status,该值是一个枚举型常量,定义如下

typedef enum { FLASH_BUSY = 1, // 忙 FLASH_ERROR_PG, // 编程错误 FLASH_ERROR_WRP, // 写保护错误 FLASH_COMPLETE, // 操作完成 FLASH_TIMEOUT // 操作超时 }FLASH_Status;

2、因为写Flash,一次只能写入半字(16位),所以写一个字(32位)是通过写入2次实现的,写入一次后地址加2,再写入。那么写入1个字节数据也需要占用半个字的地址(16位地址)。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有